﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;
namespace QuanLyNhaHang
{
    public partial class QLNhanVien : Form
    {
        DataTable LoaiNV,DSNhanVien;
        public QLNhanVien()
        {
            InitializeComponent();
        }
        private void LayDSNhanVien()
        {
            DSNhanVien = BUSNhanVien.LayDSNhanVien();
            dataGridViewDSNhanVien.DataSource = DSNhanVien;
            dataGridViewDSNhanVien.Columns[0].Visible = false;
            dataGridViewDSNhanVien.Columns[1].HeaderText = "Username";
            dataGridViewDSNhanVien.Columns[2].Visible = false;
            dataGridViewDSNhanVien.Columns[3].HeaderText = "Họ và Tên";
            dataGridViewDSNhanVien.Columns[4].HeaderText = "Địa Chỉ";
            dataGridViewDSNhanVien.Columns[5].HeaderText = "Điện Thoại";
            dataGridViewDSNhanVien.Columns[6].HeaderText = "Chức Vụ";
            dataGridViewDSNhanVien.Columns[7].HeaderText = "Ngày Tạo";
        }
        private void TaoLoaiNV()
        {
            LoaiNV = new DataTable();
            DataColumn loai = new DataColumn("loai", typeof(string));
            DataColumn mota = new DataColumn("mota", typeof(string));
            LoaiNV.Columns.Add(loai);
            LoaiNV.Columns.Add(mota);
            DataRow row1 = LoaiNV.NewRow();
            row1[0] = "emp";
            row1[1] = "Chọn Loại NV";
            LoaiNV.Rows.Add(row1);
            DataRow row2 = LoaiNV.NewRow();
            row2[0] = "admin";
            row2[1] = "Quản Lý";
            LoaiNV.Rows.Add(row2);
            DataRow row3 = LoaiNV.NewRow();
            row3[0] = "normal";
            row3[1] = "Nhân Viên";
            LoaiNV.Rows.Add(row3);
        }
        private void GanLoaiNV()
        {
            TaoLoaiNV();
            comboBoxLoaiNV.DataSource = LoaiNV;
            comboBoxLoaiNV.DisplayMember = "mota";
            comboBoxLoaiNV.ValueMember = "loai";
        }
        private void buttonThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void QLNhanVien_Load(object sender, EventArgs e)
        {
            GanLoaiNV();
            LayDSNhanVien();
        }

        private void buttonThem_Click(object sender, EventArgs e)
        {
            DTOUser nhanvien = new DTOUser();
            if (Valid_Input.Check_input(textBoxTenNV.Text) == false)
            {
                nhanvien.fullname = textBoxTenNV.Text;
            }
            else
            {
                MessageBox.Show("Tên nhân viên không được bỏ trống.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                textBoxTenNV.Focus();
                return;
            }
            if (Valid_Input.Check_input(textBoxDiaChi.Text) == false)
            {
                nhanvien.address = textBoxDiaChi.Text;
            }
            else
            {
                MessageBox.Show("Địa chỉ của nhân viên không được bỏ trống.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                textBoxDiaChi.Focus();
                return;
            }
            if (Valid_Input.Check_input(textBoxSoDienThoai.Text) == false && Valid_Input.Check_number(textBoxSoDienThoai.Text) == false && Valid_Input.Check_lenght_phone(textBoxSoDienThoai.Text) == false)
            {
                nhanvien.phonenum = textBoxSoDienThoai.Text;
            }
            else
            {
                MessageBox.Show("Số điện thoại của nhân viên không được bỏ trống.\nSố điện thoại phải là số và có độ dài 8 ký tự cho số bàn và 11 ký tự cho số DD", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                textBoxSoDienThoai.Focus();
                return;
            }
            if (Valid_Input.Check_input(textBoxUsername.Text) == false)
            {
                nhanvien.username = textBoxUsername.Text;
            }
            else
            {
                MessageBox.Show("Tên đăng nhập của nhân viên không được bỏ trống.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                textBoxUsername.Focus();
                return;
            }
            if (Valid_Input.Check_input(textBoxPassword.Text) == false && Valid_Input.Check_lenght_password(textBoxPassword.Text) == false)
            {
                if (textBoxPassword.Text == textBoxPasswordConfirm.Text)
                {
                    nhanvien.password = textBoxPassword.Text;
                }
                else
                {
                    MessageBox.Show("Password và Confirm Password không giống nhau.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    textBoxPassword.Focus();
                    return;
                }
            }
            else
            {
                MessageBox.Show("Password của nhân viên không được bỏ trống\nPassword có độ dài từ 6 - 15 ký tự.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                textBoxPassword.Focus();
                return;
            }
            if (comboBoxLoaiNV.SelectedValue.ToString().Trim() != "emp")
            {
                nhanvien.usertype = comboBoxLoaiNV.SelectedValue.ToString().Trim();
            }
            else
            {
                MessageBox.Show("Hãy chọn loại nhân viên.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                comboBoxLoaiNV.Focus();
                return;
            }
            nhanvien.created = DateTime.Now;
            for (int i = 0; i < dataGridViewDSNhanVien.RowCount; i++)
            {
                if (nhanvien.username == dataGridViewDSNhanVien.Rows[i].Cells[1].Value.ToString().Trim())
                {
                    MessageBox.Show("Tên đăng nhập đã tồn tại, vui lòng kiểm tra lại.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    textBoxUsername.Focus();
                    return;
                }
            }
                if (BUSNhanVien.ThemNhanVien(nhanvien) == 0)
                {
                    MessageBox.Show("Không thể thêm nhân viên, có lỗi về hệ thống.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    MessageBox.Show("Đã thêm nhân viên.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    LayDSNhanVien();
                }
        }

        private void dataGridViewDSNhanVien_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void buttonXoa_Click(object sender, EventArgs e)
        {
            int index = dataGridViewDSNhanVien.CurrentCell.RowIndex;
            int id = 0;
            int.TryParse(dataGridViewDSNhanVien.Rows[index].Cells[0].Value.ToString().Trim(), out id);
            if (id > 0)
            {
                DialogResult confirm = MessageBox.Show("Bạn thực sự muốn xóa nhân viên này?","Thông Báo", MessageBoxButtons.YesNo,MessageBoxIcon.Question);
                if (confirm == DialogResult.Yes)
                {
                    if (BUSNhanVien.XoaNhanVien(id) == 0)
                    {
                        MessageBox.Show("Không thể xóa nhân viên. Có lỗi hệ thống", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    else
                    {
                        MessageBox.Show("Đã xóa thành công.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        LayDSNhanVien();
                    }
                }
            }
            else
            {
                MessageBox.Show("Phải chọn vào một nhân viên trước khi xóa", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
        }

        private void buttonSua_Click(object sender, EventArgs e)
        {
            int index = dataGridViewDSNhanVien.CurrentCell.RowIndex;
            string original_user = dataGridViewDSNhanVien.Rows[index].Cells[1].Value.ToString().Trim();
            DTOUser nhanvien = new DTOUser();
            nhanvien.id = int.Parse(dataGridViewDSNhanVien.Rows[index].Cells[0].Value.ToString().Trim());
            if (Valid_Input.Check_input(textBoxTenNV.Text) == false)
            {
                nhanvien.fullname = textBoxTenNV.Text;
            }
            else
            {
                MessageBox.Show("Tên nhân viên không được bỏ trống.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                textBoxTenNV.Focus();
                return;
            }
            if (Valid_Input.Check_input(textBoxDiaChi.Text) == false)
            {
                nhanvien.address = textBoxDiaChi.Text;
            }
            else
            {
                MessageBox.Show("Địa chỉ của nhân viên không được bỏ trống.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                textBoxDiaChi.Focus();
                return;
            }
            if (Valid_Input.Check_input(textBoxSoDienThoai.Text) == false && Valid_Input.Check_number(textBoxSoDienThoai.Text) == false && Valid_Input.Check_lenght_phone(textBoxSoDienThoai.Text) == false)
            {
                nhanvien.phonenum = textBoxSoDienThoai.Text;
            }
            else
            {
                MessageBox.Show("Số điện thoại của nhân viên không được bỏ trống.\nSố điện thoại phải là số và có độ dài 8 ký tự cho số bàn và 11 ký tự cho số DD", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                textBoxSoDienThoai.Focus();
                return;
            }
            if (Valid_Input.Check_input(textBoxUsername.Text) == false)
            {
                nhanvien.username = textBoxUsername.Text;
            }
            else
            {
                MessageBox.Show("Tên đăng nhập của nhân viên không được bỏ trống.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                textBoxUsername.Focus();
                return;
            }
            if (Valid_Input.Check_input(textBoxPassword.Text) == false && Valid_Input.Check_lenght_password(textBoxPassword.Text) == false)
            {
                if (textBoxPassword.Text == textBoxPasswordConfirm.Text)
                {
                    nhanvien.password = textBoxPassword.Text;
                }
                else
                {
                    MessageBox.Show("Password và Confirm Password không giống nhau.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    textBoxPassword.Focus();
                    return;
                }
            }
            else
            {
                MessageBox.Show("Password của nhân viên không được bỏ trống\nPassword có độ dài từ 6 - 15 ký tự.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                textBoxPassword.Focus();
                return;
            }
            if (comboBoxLoaiNV.SelectedValue.ToString().Trim() != "emp")
            {
                nhanvien.usertype = comboBoxLoaiNV.SelectedValue.ToString().Trim();
            }
            else
            {
                MessageBox.Show("Hãy chọn loại nhân viên.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                comboBoxLoaiNV.Focus();
                return;
            }
            
            nhanvien.created = DateTime.Now;
            if (nhanvien.username != original_user)
            {
                for (int i = 0; i < dataGridViewDSNhanVien.RowCount; i++)
                {
                    if (nhanvien.username == dataGridViewDSNhanVien.Rows[i].Cells[1].Value.ToString().Trim())
                    {
                        MessageBox.Show("Tên đăng nhập đã tồn tại, vui lòng kiểm tra lại.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        textBoxUsername.Focus();
                        return;
                    }
                }
            }
            if (BUSNhanVien.CapNhatNhanVien(nhanvien) == 0)
            {
                MessageBox.Show("Không thể cập nhật nhân viên, có lỗi về hệ thống.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                MessageBox.Show("Đã cập nhật lại thông tin.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                LayDSNhanVien();
            }
        }

        private void dataGridViewDSNhanVien_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            int index = dataGridViewDSNhanVien.CurrentCell.RowIndex;
            textBoxMaNV.Text = dataGridViewDSNhanVien.Rows[index].Cells[0].Value.ToString().Trim();
            textBoxUsername.Text = dataGridViewDSNhanVien.Rows[index].Cells[1].Value.ToString().Trim();
            textBoxPassword.Text = textBoxPasswordConfirm.Text = dataGridViewDSNhanVien.Rows[index].Cells[2].Value.ToString().Trim();
            textBoxTenNV.Text = dataGridViewDSNhanVien.Rows[index].Cells[3].Value.ToString().Trim();
            textBoxDiaChi.Text = dataGridViewDSNhanVien.Rows[index].Cells[4].Value.ToString().Trim();
            textBoxSoDienThoai.Text = dataGridViewDSNhanVien.Rows[index].Cells[5].Value.ToString().Trim();
            comboBoxLoaiNV.SelectedValue = dataGridViewDSNhanVien.Rows[index].Cells[6].Value.ToString().Trim();
        }
    }
}
